博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django之组合搜索组件(二)--另附simple_tag的创建使用方法
阅读量:6582 次
发布时间:2019-06-24

本文共 4422 字,大约阅读时间需要 14 分钟。

这次的代码为Django之组合搜索组件(一)的改版,实现的结果和(一)相同,不同的是,这次运用simple_tag方式,使.html程序简化

所以现在就开始编程吧!

首先想使用simple_tag方法,那就先对simple_tag进行配置

a、通过python manage.py startapp app01(app的名字)创建一个app,然后再app的子目录下创建templatetags文件夹,一定是templatetags文件夹,其他名称的文件夹没有用,然后再该文件夹下创建.py文件,在该文件里编写simple_tag装饰

 

b、要在与工程名字相同的问价里的settings.py文件下找到INSTALLED_APPS,将app01写入,使其进行创建 

 

c、接下来就要开始在templatetags文件夹下编写程序了,例filter.py

from django import templatefrom django.utils.safestring import mark_safe    #包装一下register = template.Library()@register.simple_tag          # 装饰def filter_all(arg_dict,k):   # aig_dict 为前端发送过来的 k为前端传送article_type_id的参数    if k == 'article_type_id':        n1 = arg_dict['article_type_id']        n2 = arg_dict['category_id']        if n1 == 0:            ret = '全部' % n2  #生成模板        else:            ret = '全部' % n2    else:        n1 = arg_dict['category_id']        n2 = arg_dict['article_type_id']        if n1 == 0:            ret = '全部' % n2        else:            ret = '全部' % n2    return mark_safe(ret)              #传送到前端@register.simple_tagdef filter_article_type(article_type_list,arg_dict):    ret = []    for row in article_type_list:        if row.id == arg_dict['article_type_id']:            temp = '%s' %(row.id,arg_dict['category_id'],row.caption,)        else:            temp = '%s' %(row.id,arg_dict['category_id'],row.caption,)        ret.append(temp)    return mark_safe(''.join(ret))   #需要进行包装@register.simple_tagdef filter_category(category_list,arg_dict):    rat=[]    for row in category_list :        if row.id == arg_dict['category_id']:            temp = '%s' %(arg_dict['article_type_id'],row.id,row.caption,)        else:            temp = '%s' %(arg_dict['article_type_id'],row.id,row.caption,)        rat.append(temp)        return mark_safe(''.join(rat))   #需要进行包装

d、在前端的.html文件中

{% load filter %} 
{% filter_all arg_dict 'article_type_id' %}
{% filter_article_type article_type_list arg_dict %}

那接下来就是对simple_tag装饰功能的演示了!

代码和Django之组合搜索组件(一)代码相同,不同的是.html文件了的代码做出了相应的修改和filter.py的创建,具体创建方法我就不在细说了,就用图片演示一下吧!

 

filter.pyfrom django import templatefrom django.utils.safestring import mark_safe    #包装一下register = template.Library()@register.simple_tag          # 装饰def filter_all(arg_dict,k):   # aig_dict 为前端发送过来的 k为前端传送article_type_id的参数        if k == 'article_type_id':        n1 = arg_dict['article_type_id']        n2 = arg_dict['category_id']        if n1 == 0:            ret = '全部' % n2  #生成模板        else:            ret = '全部' % n2    else:        n1 = arg_dict['category_id']        n2 = arg_dict['article_type_id']        if n1 == 0:            ret = '全部' % n2        else:            ret = '全部' % n2    return mark_safe(ret)              #传送到前端@register.simple_tagdef filter_article_type(article_type_list,arg_dict):    ret = []    for row in article_type_list:        if row.id == arg_dict['article_type_id']:            temp = '%s' %(row.id,arg_dict['category_id'],row.caption,)        else:            temp = '%s' %(row.id,arg_dict['category_id'],row.caption,)        ret.append(temp)    return mark_safe(''.join(ret))   #需要进行包装@register.simple_tagdef filter_category(category_list,arg_dict):        rat=[]    for row in category_list :        if row.id == arg_dict['category_id']:            temp = '%s' %(arg_dict['article_type_id'],row.id,row.caption,)        else:            temp = '%s' %(arg_dict['article_type_id'],row.id,row.caption,)        rat.append(temp)        return mark_safe(''.join(rat))   #需要进行包装
{% load filter %}  

过滤条件

{% filter_all arg_dict 'article_type_id' %}
{% filter_article_type article_type_list arg_dict %}
{% filter_all arg_dict 'category_id' %}
{% filter_category category_list arg_dict %} {# {% for row in category_list %}#}{# {% if row.id == arg_dict.category_id %}#}{#
{
{ row.caption }}
#}{# {% else %}#}{#
{
{ row.caption }}
#}{# {% endif %}#}{# {% endfor %}#}

查询结果

    {% for row in result %}
  • {
    { row.id }}-{
    { row.title }}
  • {% endfor %}

最后的结果也为这样,知识利用simple_tag缩短了html文件的代码量

 

转载于:https://www.cnblogs.com/zhuifeng-mayi/p/9163226.html

你可能感兴趣的文章
Cisco路由器上的IPSec协议(站点到站点的×××)
查看>>
Java面向对象学习笔记 -- 5(抽象类、接口)
查看>>
关于apache下同IP多域名支持HTTPS和80跳转HTTPS的配置
查看>>
Linux Python详细安装、升级指南
查看>>
软件架构
查看>>
无法修复ie使用代理服务器
查看>>
【Apache Mina2.0开发之二】自定义实现Server/Client端的编解码工厂(自定义编码与×××)!...
查看>>
JS判断终端类型
查看>>
Exchange 2013 SP1 先决条件
查看>>
关于suid/guid
查看>>
教你给IDEA安装插件
查看>>
在windows上安装curl
查看>>
使用EasyWechat为“WX公众号”增加一个访问统计的方案实现
查看>>
数据库的工具类
查看>>
深入理解PHP Opcode缓存原理
查看>>
Spket Eclipse插件使用教程
查看>>
大端和小端(高位和低位)
查看>>
Android医药助手源码
查看>>
IPv6隧道及NAT-PT技术讲解
查看>>
解决SwipeRefreshLayout结合ListView EmptyView使用不起作用的问题
查看>>